Forecasting a time series based on actuals and a plan

ABSTRACT

Embodiments of the present invention provide a system, method and computer program product for forecasting a time series based on actuals and a plan. A method comprises generating a first and a second sequence of segments that rise and fall alternately based on a first and a second sequence of data values over time, respectively. The first and second sequence of data values represent actual data for an ongoing project and estimated data for a planned project, respectively. The method further comprises aligning at least one segment of the second sequence of segments with at least one segment of the first sequence of segments, and adjusting the estimated data by replacing at least one segment of the second sequence of segments with a scaled version of at least one corresponding aligned segment of the first sequence of segments. The scaled version maintains an estimated total for the planned project.

FIELD OF THE INVENTION

The present invention generally relates to forecasting costs associatedwith service delivery, and more particularly, to a system, method andcomputer program product for forecasting a time series based on actualsand a plan.

BACKGROUND

A service provider offers services (e.g., Information Technologyservices) to customers. A service delivery engagement involves thedelivery of services offered. A service delivery engagement may becomplex. For example, the delivery of services may span many years(e.g., a multi-year service delivery project). As another example, thedelivery of services may involve delivery and/or customer locations inmultiple countries (e.g., a multi-country service delivery project).Modeling cost estimations for a service delivery engagement is based onmultiple variables, such as socioeconomic conditions of delivery and/orcustomer locations, demand for services offered, infrastructure neededto support the services offered, etc.

BRIEF SUMMARY

Embodiments of the present invention provide a system, method andcomputer program product for forecasting a time series based on actualsand a plan. A method comprises generating a first and a second sequenceof segments that rise and fall alternately based on a first and a secondsequence of data values over time, respectively. The first and secondsequence of data values represent actual data for an ongoing project andestimated data for a planned project, respectively. The method furthercomprises aligning at least one segment of the second sequence ofsegments with at least one segment of the first sequence of segments,and adjusting the estimated data by replacing at least one segment ofthe second sequence of segments with a scaled version of at least onecorresponding aligned segment of the first sequence of segments. Thescaled version maintains an estimated total for the planned project.

These and other aspects, features and advantages of the invention willbe understood with reference to the drawing figures, and detaileddescription herein, and will be realized by means of the variouselements and combinations particularly pointed out in the appendedclaims. It is to be understood that both the foregoing generaldescription and the following brief description of the drawings anddetailed description of the invention are exemplary and explanatory ofpreferred embodiments of the invention, and are not restrictive of theinvention, as claimed.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the invention is particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The foregoing and other objects, features, andadvantages of the invention are apparent from the following detaileddescription taken in conjunction with the accompanying drawings inwhich:

FIG. 1 illustrates an example system for forecasting costs associatedwith service delivery, according to an embodiment of the presentinvention;

FIG. 2 illustrates two examples of graphs of time series;

FIG. 3 illustrates an example pre-processing unit, according to anembodiment of the present invention;

FIG. 4 illustrates an example segmented model, according to anembodiment of the present invention;

FIG. 5A illustrates an example peak and trough indicator array for anexample input time series, according to an embodiment of the presentinvention;

FIG. 5B illustrates an example segment table for an example input timeseries, according to an embodiment of the present invention;

FIG. 6A illustrates a flowchart of an example process for generating asequence of segments that rise and fall alternatively for a sequence ofdata values, according to an embodiment of the present invention;

FIG. 6B illustrates a flowchart of an example process for generating asequence of segments that rise and fall alternatively for a sequence ofdata values, according to an embodiment of the present invention;

FIG. 6C illustrates a flowchart of an example process for generating asuccinct approximate representative for an input series.

FIG. 6D illustrates a flowchart of an example process for determiningwhether a first service delivery project is similar to a second servicedelivery project, according to an embodiment of the present invention;

FIG. 7A illustrates generating an example typical model based on a setof projects, according to an embodiment of the present invention;

FIG. 7B illustrates a flowchart of an example process for generating atypical model, according to an embodiment of the present invention;

FIG. 7C illustrates a flowchart of an example process for constructing atypical model for one or more work patterns of a set of service deliveryprojects, according to an embodiment of the present invention;

FIG. 8A illustrates an example typical model, according to an embodimentof the present invention;

FIG. 8B illustrates an example input time series missing one or morepast data values, according to an embodiment of the present invention;

FIG. 9 illustrates the example input time series in FIG. 8B concatenatedwith a scaled typical model to extrapolate missing data values,according to an embodiment of the present invention;

FIG. 10 illustrates a flowchart of an example process for extrapolatingmissing past data values for an input series, according to an embodimentof the present invention;

FIG. 11 illustrates an example input time series concatenated with ascaled typical model to forecast future data values, according to anembodiment of the present invention;

FIG. 12 illustrates a flowchart of an example process for forecastingfuture data values for an input series, according to an embodiment ofthe present invention;

FIG. 13 illustrates an example generic model, according to an embodimentof the present invention;

FIG. 14 illustrates multiple example time series including a re-shapedtime series, according to an embodiment of the present invention;

FIG. 15A illustrates a flowchart of an example process for generatingrevised estimated data values, according to an embodiment of the presentinvention;

FIG. 15B illustrates a flowchart of an example process for aligning andre-shaping, according to an embodiment of the present invention; and

FIG. 16 is a high level block diagram showing an information processingsystem useful for implementing one embodiment of the invention.

The detailed description explains the preferred embodiments of theinvention, together with advantages and features, by way of example withreference to the drawings.

DETAILED DESCRIPTION

The present invention may be understood more readily by reference to thefollowing detailed description of the invention taken in connection withthe accompanying drawing figures, which form a part of this disclosure.It is to be understood that this invention is not limited to thespecific devices, methods, conditions or parameters described and/orshown herein, and that the terminology used herein is for the purpose ofdescribing particular embodiments by way of example only and is notintended to be limiting of the claimed invention. One or more exemplaryembodiments of the invention are described below in detail. Thedisclosed embodiments are intended to be illustrative only sincenumerous modifications and variations therein will be apparent to thoseof ordinary skill in the art.

Embodiments of the invention relate to forecasting costs associated withservice delivery, and more particularly, to a system, method andcomputer program product for forecasting a time series based on actualsand a plan. For a first series comprising a sequence of actual datavalues, embodiments of the invention generate a corresponding firstsequence of segments that rise and fall alternatively. For a secondseries comprising a sequence of estimated data values, embodiments ofthe invention generate a corresponding second sequence of segments thatrise and fall alternatively. Embodiments of the invention align at leastone segment of the second sequence of segments with at least onecorresponding segment of the first sequence of segments. Embodiments ofthe invention adjust the second series based on the aligned segments.The adjusted second series comprises revised estimated data values.

Referring now to the drawings, FIG. 1 illustrates an example system 100for forecasting costs associated with service delivery, according to apreferred embodiment of the present invention. The system 100 comprisesa ledger storage unit 110, a cost cases storage unit 120, apre-processing unit 130, a models storage unit 140, a training unit 150,a predictions storage unit 160, a reporting application 170, and areporting storage unit 180.

Forecasting long-term costs associated with a service delivery projectrequires a sizable amount of input data, such as ledger data, meta datarelated to service contracts, and cost cases. The ledger storage unit110 maintains ledger data representing actual data, such as actual costsor revenue, for one or more projects. For example, the ledger datamaintained may comprise a set of monthly entries of cost or revenueincurred by an ongoing service delivery project. In one embodiment, theledger storage unit 110 resides on one or more server databases.

The cost cases storage unit 120 maintains one or more cost cases. A costcase is a detailed plan providing cost estimations for a planned project(e.g., a planned service delivery project). A cost case is typicallydeveloped by a service provider during engagement with a potentialcustomer and before any contract negotiation or signing. In oneembodiment, the cost cases storage unit 120 resides on one or moreserver databases.

A cost case includes data relating to a potential customer and datadescribing services offered to the potential customer. For example, acost case may include multiple line items describing service componentsfor a planned project (e.g., a list of prices for various servicecomponents related to Information Technology (IT) services, such asstorage management, middleware support, etc.).

The input data may become available at different intervals. For example,the system 100 may acquire/update ledger data, service contract metadata and cost cases for the ledger storage unit 110 and the cost casesstorage unit 120 on a monthly basis.

The pre-processing unit 130 is configured to pre-process input data.Pre-processing operations that the pre-processing unit 130 is configuredto perform include smoothing input data, identifying terminating servicecontracts and replacements for the terminating service contracts,generating (i.e., constructing) typical models, extrapolating actualdata into the past, and generating estimate models. In one embodiment,the pre-processing unit 130 may perform multiple pre-processingoperations in parallel.

The models storage unit 140 maintains one or more estimate modelsgenerated by the pre-processing unit 130. In one embodiment, the modelsstorage unit 140 resides on one or more server databases.

The training unit 150 is configured to train each estimate modelmaintained in the models storage unit 140 to better fit actual data.Each estimate model has a corresponding model parameter that isapplicable to only said estimate model. To minimize discrepanciesbetween an aggregate of all estimate models and a correspondingaggregate of all ledger data for corresponding projects, the trainingunit 150 makes adjustments to values of the model parameters. In oneembodiment, the training unit 150 forecasts future cost data for anongoing project based on the following: either one or more models basedon a cost case for the project, or one or more generic modelsconstructed from ledger data by extrapolation.

The predictions storage unit 160 maintains long range cost estimationsfor one or more planned or ongoing projects.

The reporting storage unit 180 maintains read-only, pre-indexed data forthe reporting application 170. The data maintained in the reportingstorage unit 180 is extracted from the models storage unit 140 and thepredictions storage unit 160. The reporting application 170 comprises areporting application configured to report forecasting results via aninteractive user interface. The reporting application 170 allows fordata to be aggregated or filtered in various ways. For example, thereporting application 170 allows filtering by domain (e.g., filtering bybusiness domain) or any grouping of dimensions (e.g., grouping by sectorand customer).

FIG. 2 illustrates two examples of graphs of time series 50. Typically,a time series 50 comprises a periodic sequence of values (e.g., costs,profits, revenue) as a function of time. In one embodiment, some of theledger data maintained in the ledger storage unit 110 may be representedas one or more time series models 50, wherein each time series 50comprises a sequence of actual costs incurred by an ongoing servicedelivery project over time (e.g., time series 51 shown in FIG. 2).Similarly, some of the cost cases maintained in the cost cases storageunit 120 may be represented as one or more time series models 50,wherein each time series 50 comprises a sequence of cost estimations fora planned service delivery project over time (e.g., time series 52 shownin FIG. 2).

FIG. 3 illustrates an example pre-processing unit 130, according to anembodiment of the present invention. The pre-processing unit 130comprises a data retrieval module 131, a data smoothing module 132, asegmentation module 133, a typical model construction module 135, anextrapolation module 136, a re-shaping module 138, and a similaritymodule 141.

The data retrieval module 131 is configured to acquire input data fromthe ledger storage unit 110 and/or the cost cases storage unit 120. Asstated above, the pre-processing unit 130 is configured to performmultiple pre-processing operations. Specifically, the data smoothingmodule 132 is configured to smooth input data to minimize noise. Forexample, a 3-month simple moving average may be used to smooth inputdata acquired on a monthly basis. In one embodiment, smoothing of inputdata may be enabled or disabled.

The typical model construction module 135 is configured to generate(i.e., construct) typical models. The typical model construction module135 constructs a typical model based on ledger data, such as initialsequences of ledger data experienced during periods where significantchanges in accounting practices are minimal. Typical models provide goodextrapolations of cost behavior during early volatile cost behavior.

The extrapolation module 136 is configured to extend ledger data intothe past and/or into the future. In one example, ledger data areextended into the past in order to enable alignment of the ledger datawith a cost case. In another example, a generic model for a project iscreated by extending ledger data into the future.

The extrapolation module 136 extends ledger data for a project into thepast by extending the ledger data to when the project began and beforefirst available ledger data. Specifically, the extrapolation module 136adds the required number of elements of a scaled version of a typicalmodel to the beginning of the ledger data, wherein a scaling factor thatfits the typical model to the ledger data are determined. Theextrapolation module 136 extends ledger data for a project into thefuture by adding a scaled typical model to the end of the ledger data,thereby forming a generic model for the project. If the project isscheduled to run longer than the generic model, the extrapolation module136 extends the generic model to the scheduled project end date based ona final segment of the generic model.

The re-shaping module 138 is configured to align one or more modelsbased on a cost case to historical ledger data, and reshape costestimations for the cost case based on actual costs reflected in ledgerdata.

Some of the pre-processing operations described above may requiresegmentation of an input time series 50. The segmentation module 133 isconfigured to generate a segmented model 200 (FIG. 4) for an input timeseries 50. Specifically, the segmentation module 133 comprises a peaksand troughs analysis module 134 configured for determining peak datavalues (e.g., peak costs) and trough data values (e.g., trough costs) ofthe input time series 50. In this specification, a data value denotes anelement or a data point of a time series, wherein the data value has acorresponding position in the time series and a corresponding amount. Inone embodiment, the peaks and troughs analysis module 134 generates acorresponding indicator array 70 (FIG. 5A) for the input time series 50.The indicator array 70 comprises a corresponding indicator 71 (FIG. 5A)for each data value (i.e., data point) of the input time series 50. Acorresponding indicator 71 for a data value of the input time series 50indicates whether said data value is a peak data value, a trough datavalue, or neither a peak data value nor a trough data value.

The segmentation module 133 further comprises a partitioning module 139configured for partitioning the input time series 50 into multiplesegments based on the peak data values and trough data valuesdetermined, wherein each segment represents a contiguous subsequence ofdata values. For example, each segment may represent a contiguoussubsequence of costs. With the possible exception of a last segment forthe input time series 50, each segment ends in either a peak data valueor a trough data value. The partitioning module 139 is furtherconfigured to generate a succinct approximate representation of theinput time series 50 based on the segments of the input time series 50.

In this specification, let the term pre-determined length denote thelength of a sequence of neighboring data values.

In one embodiment, a peak data value is a data value that satisfies eachof the following conditions: (1) the peak data value is greater than adata value immediately preceding (“immediate predecessor”) the peak datavalue, (2) the peak data value is no less than any data value of asequence of neighboring data values of a pre-determined lengthimmediately preceding the peak data value, and (3) the peak data valueis no less than any data value of a sequence of neighboring data valuesof a pre-determined length immediately following the peak data value.

In one embodiment, a trough data value is a data value that satisfieseach of the following conditions: (1) the trough data value is less thana data value immediately preceding (“immediate predecessor”) the troughdata value, (2) the trough data value is no greater than any data valueof a sequence of neighboring data values of a pre-determined lengthimmediately preceding the trough data value, and (3) the trough datavalue is no greater than any data value of a sequence of neighboringdata values of a pre-determined length immediately following the troughdata value.

If data values of an input time series 50 represents costs, a peak datavalue represents a peak cost and a trough data value represents a troughcost.

In this specification, let x represent an example input time seriescomprising n data values, such as data values x[0], x[1], . . . , andx[n−1]. Let p represent an example peak and trough indicator array forthe input time series x, wherein the indicator array p comprises nindicators 71, such as indicators p[0], p[1], . . . , p[n−1]. Eachindicator p[i] indicates whether a corresponding data value of the inputtime series x is a peak data value, a trough data value or neither apeak data value nor a trough data value.

In one embodiment, the peaks and troughs analysis module 134 sets eachindicator p[i] of the indicator array p to 0, 1, or −1. Specifically,the peaks and troughs analysis module 134 sets an indicator p[i] to 1 ifa corresponding data value is a peak. The peaks and troughs analysismodule 134 sets an indicator p[i] to −1 if a corresponding element datavalue is a trough. The peaks and troughs analysis module 134 sets anindicator p[i] to 0 if a corresponding data value is neither a peak nora trough. The input time series x is partitioned into segments based onthe non-zero indicators 71 of the indicator array p.

Table 1 below provides example pseudo code for determining peak datavalues and trough data values of an input time series x.

TABLE 1 //Initialize each entry of the indicator array p to 0 p[0], . .. , p[n−1] = 0; //Initialize index i to 0 i = 0; //Initialize variablestate to ‘begin’ state state = begin; // Extend each end of input timeseries x by a subsequence of elements of pre-determined length,//respectively (e.g., if the pre-determined length is 2, input timeseries x is concatenated with two //elements to the left and twoelements to the right) x = x[0], 0 + x + x[n−1], x[n−1]; do {     //Setindex j to the sum of i and a pre-determined length (e.g., 2)     j =i + 2;     //Determine if x[j] is a provisional peak by comparing x[j]against the following: a     //subsequence of data values ofpre-determined length immediately preceding x[j], and     //asubsequence of data values of pre-determined length immediatelysucceeding x[j]     if (provisionalPeak(x[j−2], . . . , x[j + 2])) {      //x[j] is a provisional peak       //Determine whether previousnon-zero indicator p[k] indicates a provisional peak       if (state ==peak) {          //If indicator p[k] indicates a provisional peak, setindicator p[k] to 0,          //thereby biasing a peak towards the right         p[k] = 0;       }       //Set variable state to ‘peak’ toindicate a provisional peak for the       //most recent segment analyzed      state = peak;       //Set indicator p[i] to 1, indicating aprovisional peak       p[i] = 1;       //Set k to i, wherein kreferences index of a non-zero indicator of indicator       //array p      k = i;     }     else {       //Determine if x[j] is a provisionaltrough by comparing x[j] against the       //following: a subsequence ofdata values of pre-determined length immediately       //preceding x[j],and a subsequence of data values of pre-determined length      //immediately succeeding x[j]       if (provisionalTrough(x[j−2],. . . , x[j+2])) {          //x[j] is a provisional trough         //Determine whether previous non-zero indicator p[k] indicatesa          //provisional trough          if (state == trough) {            //If indicator p[k] indicates a provisional trough, setindicator             //p[k] to 0, thereby biasing a trough towards theright             p[k] = 0;          }          //Set variable state to‘trough’ to indicate a provisional trough for the          //most recentsegment analyzed          state = trough;          //Set indicator p[i]to −1, indicating a provisional trough          p[i] = −1;         //Set k to i, wherein k references index of a non-zeroindicator of indicator          //array p          k = i;       }     }    //Increment iteration index i     i = i + 1; } while (i <= n−1)//repeat loop while iteration index i is less than or equal to n−1 //ifiteration index i is greater than n−1, output indicator array p outputp;

As shown in Table 1, in one embodiment, the peaks and troughs analysismodule 134 iterates through each data value of an input time series 50to determine whether the data value represents a provisional peak, aprovisional trough or neither. Specifically, for each data value, thepeaks and troughs analysis module 134 determines whether the data valueis a provisional peak or a provisional trough in the context ofneighboring data values, such as a first sequence of neighboring datavalues immediately preceding the data value and a second sequence ofneighboring data values immediately following the data value. The firstsequence of neighboring data values may have the same number of datavalues (i.e., the same length) as the second sequence of neighboringdata values.

Before the peaks and troughs analysis module 134 iterates through eachdata value of the input time series 50, the peaks and troughs analysismodule 134 may initialize parameters/variables for use duringsegmentation. For example, the peaks and troughs analysis module 134 mayextend each end of the input time series 50 (i.e., the beginning and theend of the input time series 50) by concatenating a sequence of datavalues of pre-determined length to each end of the input time series 50.

For example, assume an example initial input time series x comprising anarray of data values [1, 2, 3, 2, 1, 1]. If the pre-determined length isset to 2, each end of the initial input time series x is concatenatedwith 2 data values, thereby producing an extended input time series x.For example, a first sequence of data values [1, 0] and a secondsequence of data values [1, 1] may be appended to the beginning and theend of the initial input time series x, respectively, to generate theextended input time series x comprising an array of data values [1, 0,1, 2, 3, 2, 1, 1, 1, 1].

An indicator array p for the input time series x is initialized bysetting each entry p[i] of the indicator array p to zero. In thisspecification, let i denote an iteration index for the indicator arrayp, wherein i is initialized to zero. Let j denote an iteration index forthe extended input time series x, wherein j is initialized to the sum ofi and the pre-determined length (i.e., j references the first data valueof the initial input time series x). Let state denote a variable thatidentifies the most recent non-zero indicator p[i], wherein state isinitialized to ‘begin’.

As the iteration index j is offset by the pre-determined length, anindicator p[i] of the indicator array p corresponds to a data value x[j]of the initial input time series 50. For each iteration of i wherein iis no greater than n−1, the peaks and troughs analysis module 134determines whether a corresponding data value x[j] for the indicatorp[i] is a provisional peak, a provisional trough or neither. Assumingthe pre-determined length is 2, the peaks and troughs analysis module134 determines whether the data value x[j] is a provisional peak or aprovisional trough in the context of neighboring data values x[j−2],x[j−1], x[j+1] and x[j+2]. The peaks and troughs analysis module 134determines that the data value x[j] is a peak data value if thefollowing conditions are satisfied: (1) x[j] is greater than x[j−1], and(2) x[j] is greater than or equal to x[j−2], x[j+1], and x[j+2]. Thepeaks and troughs analysis module 134 sets an indicator p[i] for thedata value x[j] to 1 if the data value x[j] is a provisional peak.

The peaks and troughs analysis module 134 determines that x[j] is atrough cost if the following conditions are satisfied: (1) x[j] is lessthan x[j−1], and (2) x[j] is less than or equal to x[j−2], x[j+1], andx[j+2]. The peaks and troughs analysis module 134 sets an indicator p[i]for the data value x[j] to −1 if the data value x[j] is a provisionaltrough. The peaks and troughs analysis module 134 sets an indicator p[i]for the data value x[j] to 0 if the data value x[j] is neither aprovisional peak nor a provisional trough.

Assume the peak and troughs analysis module 134 determines peak datavalues and trough data values of the example input time series x usingthe example extended input time series x comprising the array of datavalues [1, 0, 1, 2, 3, 2, 1, 1, 1, 1]. When i is equal to 0 and j isequal to 2, the peaks and troughs analysis module 134 determines whetherthe data value x[2] is a provisional peak or a provisional trough in thecontext of neighboring data values x[0], x[1], x[3] and x[4]. x[2] isnot a provisional peak because x[2] is less than x[3]. x[2] is also nota provisional trough because x[2] is greater than x[1]. Therefore, acorresponding indicator p[0] is set to 0, indicating that x[2] isneither a peak nor a trough.

When i is equal to 1 and j is equal to 3, the peaks and troughs analysismodule 134 determines whether the data value x[3] is a provisional peakor a provisional trough in the context of neighboring data values x[1],x[2], x[4] and x[5]. x[3] is not a provisional peak because x[3] is lessthan x[4]. x[3] is also not a provisional trough because x[3] is greaterthan x[2]. Therefore, a corresponding indicator p[1] is set to 0,indicating that x[3] is neither a peak nor a trough.

When i is equal to 2 and j is equal to 4, the peaks and troughs analysismodule 134 determines whether the data value x[4] is a provisional peakor a provisional trough in the context of neighboring data values x[2],x[3], x[5] and x[6]. x[4] is a provisional peak because x[4] is greaterthan x[2], x[3], x[5] and x[6]. Therefore, p[2] is set to 1, indicatingthat x[4] is a provisional peak.

When i is equal to 3 and j is equal to 5, the peaks and troughs analysismodule 134 determines whether the data value x[5] is a provisional peakor a provisional trough in the context of neighboring data values x[3],x[4], x[6] and x[7]. x[5] is less than x[4] but greater than x[6].Therefore, p[3] is set to 0, indicating that x[5] is neither a peak nora trough.

When i is equal to 4 and j is equal to 6, the peaks and troughs analysismodule 134 determines whether the data value x[6] is a provisional peakor a provisional trough in the context of neighboring data values x[4],x[5], x[7] and x[8]. x[6] is a provisional trough because x[6] is lessthan or equal to x[4], x[7] and x[8], and x[6] is less than x[5].Therefore, p[4] is set to −1, indicating that x[6] is a provisionaltrough.

When i is equal to 5 and j is equal to 7, the peaks and troughs analysismodule 134 determines whether the data value x[7] is a provisional peakor a provisional trough in the context of neighboring data values x[5],x[6], x[8] and x[9]. x[7] is equal to x[6] and x[8]. Therefore, p[5] isset to 0, indicating that x[7] is neither a peak nor a trough.

The resulting indicator array p for the example initial input timeseries x comprises an array of indicators [0, 0, 1, 0, −1, 0].

The peaks and troughs analysis module 134 is further configured toconcatenate (i.e., merge) consecutive (i.e., adjacent) segments thatrise (i.e., each consecutive segment ends in a peak data value) andconcatenate consecutive segments that fall (i.e., each consecutivesegment ends in a trough data value). Therefore, the segmentation module133 produces a sequence of segments of alternating character (i.e., analternating rise and fall character).

For example, if a first segment ending in a peak data value isconsecutively followed by a second segment ending in a peak data value(i.e., the first and second segments are adjacent rising segments), thefirst and second segments are concatenated into one segment having apeak/rise character. Specifically, a corresponding indicator 71 for thefirst segment is set to 0, thereby biasing a peak data value towards theright.

As another example, if a first segment ending in a trough data value isconsecutively followed by a second segment ending in a trough data value(i.e., the first and second segments are adjacent falling segments), thefirst and the second segments are concatenated into one segment having atrough/fall character. Specifically, a corresponding indicator 71 forthe first segment is set to 0, thereby biasing a trough data valuetowards the right.

The partitioning module 139 partitions an input time series 50 intosegments based on the non-zero indicators 71 of a correspondingindicator array 70. For example, as the resulting indicator array p forthe example initial input time series x comprises the array ofindicators [0, 0, 1, 0, −1, 0], no concatenation/merging is needed forthe indicator array p (i.e., there are no consecutive segments thatfall/rise). A segmented model 200 for the example initial input timeseries x comprises three segments: a first segment comprising the datavalues x[0], x[1] and x[2] of the example initial input time series x(i.e., 1, 2, 3), a second segment comprising the data values x[3] andx[4] of the example initial input time series x (i.e., 2, 1), and athird segment comprising the data value x[5] of the example initialinput time series x (i.e., 1).

The segmentation of an input time series 50 is a fast computation. Thesegmentation is converted into a sequence of totals, wherein each totalcorresponds to a segment, and wherein each total represents a sum ofdata values of a corresponding segment. The sequence of totals providesa succinct approximate representation of the input time series 50 thatcaptures milestones, independent of timing.

The partitioning module 139 is further configured to generate a succinctapproximate representation for an input time series 50 based on acorresponding segmented model 200 for the input time series 50.Specifically, for each segment of a corresponding segmented model 200for an input time series 50, the partitioning module 139 computes atotal equal to the sum of data values included in said segment. Forexample, the totals for the first segment, the second segment, and thethird segment of the example initial input time series x are 6, 3, and1, respectively. Therefore, the sequence of totals 6, 3, 1 represent asuccinct approximate representation of the example initial input timeseries x.

In one embodiment, the partitioning module 139 provides a segment table75 (FIG. 5B) for the segmented model 200, wherein each entry of thesegment table 75 comprises segment information for a correspondingsegment. Segment information for a segment may include a totalrepresenting a combined sum of data values included in the segment, alength of the segment, and a character of the segment.

In one embodiment, the peak data values and trough data valuesidentified represent milestones in a service delivery project. Relevantpatterns of costs are represented as ratios between total costs ofvarious segments. Even if timing durations vary in unpredictable ways, aratio of total costs between a trough and peak to total costs between asubsequent trough and peak has small variance among similar projects orparts of projects (i.e., a total cost for a milestone is predictable).

In one embodiment, each peak data value of an input series 50 is no lessthan at least three other data values of the input series 50.Specifically, each peak data value is greater than a data valueimmediately preceding the peak data value in the input series 50. Eachpeak data of the input series 50 further satisfies the followingconditions: (1) the peak data value is no less than each data value of afirst subsequence of data values, and (2) the peak data value is no lessthan each data value of a second subsequence of data values. In oneexample implementation, the first subsequence of data values comprisesat least two data values immediately preceding the peak data value inthe input series 50, and the second subsequence of data values comprisesat least one data value immediately following the peak data value in theinput series 50. In another example implementation, the firstsubsequence of data values comprises at least one data value immediatelypreceding the peak data value in the input series 50, and the secondsubsequence of data values comprises at least two data valuesimmediately following the peak data value in the input series 50.

In one embodiment, each trough data value of an input series 50 is nogreater than at least three other data values of the input series 50.Specifically, each trough data value is less than a data valueimmediately preceding the trough data value in the input series 50. Eachtrough data of the input series 50 further satisfies the followingconditions: (1) the trough data value is no greater than each data valueof a first subsequence of data values, and (2) the trough data value isno greater than each data value of a second subsequence of data values.In one example implementation, the first subsequence of data valuescomprises at least two data values immediately preceding the trough datavalue in the input series 50, and the second subsequence of data valuescomprises at least one data value immediately following the trough datavalue in the input series 50. In another example implementation, thefirst subsequence of data values comprises at least one data valueimmediately preceding the trough data value in the input series 50, andthe second subsequence of data values comprises at least two data valuesimmediately following the trough data value in the input series 50.

In one embodiment, the segmentation module 133 further comprises asimilarity module 141 configured for determining whether a first servicedelivery project is similar to a second service delivery project.Specifically, the similarity module 141 utilizes the segmentation module133 to generate a first segmented model 200 (i.e., a first sequence ofsegments that rise and fall alternately) for a first input series 50comprising a sequence of costs over time for the first service deliveryproject. The similarity module 141 further utilizes the segmentationmodule 133 to generate a second segmented model 200 (i.e., a secondsequence of segments that rise and fall alternately) for a second inputseries 50 comprising a sequence of costs over time for the secondservice delivery project. For each segmented model 200, the similaritymodule 141 determines a corresponding length for said segmented model200. The similarity module 141 further determines a correlationcoefficient between the first segmented model 200 and the secondsegmented model 200. The similarity module 141 determines that the firstservice delivery project is similar to the second service deliveryproject when the first segmented model 200 and the second segmentedmodel 200 have the same length, and the correlation coefficient betweenthe first segmented model 200 and the second segmented model 200 exceedsa pre-determined threshold.

FIG. 4 illustrates an example segmented model 200, according to anembodiment of the present invention. A segmented model 200 providesalternating patterns for identifying similar processes. Specifically,the segmented model 200 comprises a sequence of segments of alternatingcharacter, such as a first segment TS₁ having a peak/rise character, asecond segment TS₂ having a trough/fall character, a third segment TS₃having a peak/rise character, a fourth segment TS₄ having a trough/fallcharacter, a fifth segment TS₅ having a peak/rise character, a sixthsegment TS₆ having a trough/fall character, a seventh segment TS₇ havinga peak/rise character, an eighth segment TS₈ having a trough/fallcharacter, a ninth segment TS₉ having a peak/rise character, and a tenthsegment TS₁₀ having a trough/fall character.

With the possible exception of a last segment, each segment of thesegmented model 200 ends in either a peak cost or a trough cost. Asshown in FIG. 4, the first segment TS₁ ends at a first peak cost Peak A,the second segment TS₂ ends at a first trough cost Trough A, the thirdsegment TS₃ ends at a second peak cost Peak B, the fourth segment TS₄ends at a second trough cost Trough B, the fifth segment TS₅ ends at athird peak cost Peak C, the sixth segment TS₆ ends at a third troughcost Trough C, the seventh segment TS₇ ends at a fourth peak cost PeakD, the eighth segment TS₈ ends at a fourth trough cost Trough D, and theninth segment TS₉ ends at a fifth peak cost Peak E.

FIG. 5A illustrates an example peak and trough indicator array 70 for anexample input time series 50, according to an embodiment of the presentinvention. Assume an input time series 50 comprises n data values. Acorresponding indicator array 70 for the input time series 50 comprisesn indicators 71. Each indicator 71 indicates whether a correspondingdata value of the input time series 50 is a peak, trough or neither apeak nor a trough.

For example, as described above, the example initial input time series xcomprising the sequence of data values [1, 2, 3, 2, 1, 1] has acorresponding indicator array 70 comprising the sequence of indicators[0, 0, 1, 0, −1, 0]. FIG. 5A illustrates the indicator array 70 for theexample initial input time series x. As shown in FIG. 5A, indicator p[2]corresponding to data value x[2] indicates that data value x[2] is apeak data value. Indicator p[4] corresponding to data value x[4]indicates that data value x[4] is a trough data value.

FIG. 5B illustrates an example segment table 75 for an example inputtime series 50, according to an embodiment of the present invention. Asdescribed above, partitioning of an input time series 50 into segmentsof alternating character is based on non-zero indicators of acorresponding indicator array 70.

For example, as described above, the example initial input time series xcomprising the sequence of data values [1, 2, 3, 2, 1, 1] has acorresponding indicator array 70 comprising the sequence of indicators[0, 0, 1, 0, −1, 0]. Therefore, partitioning of the example initialinput time series x into segments of alternating character is based onnon-zero indicators p[2] and p[4] of the corresponding indicator array70.

Specifically, a segmented model 200 for the example initial input timeseries x comprises three segments: a first segment comprising datavalues x[0], x[1] and x[2], a second segment comprising data values x[3]and x[4], and a third segment comprising data value x[5]. FIG. 5Billustrates a segment table 75 maintaining segment information for eachsegment of the example initial input time series x.

As shown in FIG. 5B, segment information for a segment may include atotal representing a combined sum of data values included in thesegment, a length of the segment, and a character of the segment. Forexample, the first segment has a total equal to 6 (i.e., the sum ofx[0], x[1] and x[2]), a length equal to 3 (i.e., the first segmentincludes only 3 data values), and a peak/rise character (because p[2]indicates that x[2] is a peak data value). The second segment has atotal equal to 3 (i.e., the sum of x[3] and x[4]), a length equal to 2(i.e., the second segment includes only 2 data values), and atrough/fall character (because p[4] indicates that x[4] is a trough datavalue). The third segment has a total equal to 1 (i.e., x[5]), a lengthequal to 1 (i.e., the third segment includes only 1 data value), andneither a peak/rise character nor a trough/fall character (because p[5]indicates that x[5] is neither a peak data value nor a trough datavalue).

The totals for the first segment, the second segment, and the thirdsegment (i.e., 6, 3, and 1) provide a succinct approximaterepresentation of the example initial input time series x.

FIG. 6A illustrates a flowchart of an example process 370 for generatinga sequence of segments that rise and fall alternatively for a sequenceof data values, according to an embodiment of the present invention. Inprocess block 371, receive an input series comprising a sequence of datavalues over time. In process block 372, determine whether data smoothingis enabled. If data smoothing is not enabled, proceed to process block374. If data smoothing is enabled, proceed to process block 373 wherethe sequence of data values is smoothed to minimize noise. After thesequence of data values is smoothed, proceed to process block 374.

In process block 374, determine at least one peak data value and atleast one trough data value for the sequence of data values. Anembodiment of the function performed by process block 374 is describedfurther above in relation to FIG. 3 and in particular in relation topeaks and troughs analysis module 134. In process block 375, generate acorresponding sequence of segments that rise and fall alternately,wherein the sequence of segments comprises a segment that rises to apeak data value and is consecutively followed by another segment thatfalls to a trough data value. In process block 376, generate a sequenceof totals representing a succinct approximate representation of theinput series, wherein each total comprises a sum of data values for acorresponding segment of the sequence of segments. An embodiment of thefunctions performed by process blocks 375 and 376 is described furtherabove in relation to FIG. 3 and in particular in relation topartitioning module 139.

FIG. 6B illustrates a flowchart of an example process 460 for generatinga sequence of segments that rise and fall alternately for a sequence ofdata values, according to an embodiment of the present invention. Inprocess block 461, partition a sequence of data values into multiplesegments based on at least one peak data value and at least one troughdata value for the sequence of data values, wherein the segmentscomprise at least one segment that rises to a peak data value and atleast one segment that falls to a trough data value. In process block462, concatenate any consecutive segments that rise. In process block463, concatenate any consecutive segments that fall. An embodiment ofthe functions performed by process blocks 461, 462 and 463 is describedfurther above in relation to FIG. 3 and in particular in relation tosegmentation module 133.

FIG. 6C illustrates a flowchart of an example process 476 for generatinga succinct approximate representative for an input series, according toan embodiment of the present invention. In process block 477, partitiona sequence of cost values over time for a service delivery project intomultiple segments, wherein each segment comprises a contiguoussubsequence of the sequence of cost values, and wherein the segmentscomprise at least one of a segment that rises to a peak cost value ofthe sequence of cost values and a segment that falls to a trough costvalue of the sequence of cost values. In process block 478, generate asequence of segments that rise and fall alternately based on thesegments, wherein the sequence of segments comprises a segment thatrises to a peak cost value and is consecutively followed by anothersegment that falls to a trough cost value. In process block 479, basedon the sequence of segments, generate a corresponding sequence of totalcost values representing a succinct approximate representation of thesequence of cost values, wherein each total cost value comprises a sumof cost values for a corresponding segment of the sequence of segments.An embodiment of the functions performed by process blocks 477, 478 and479 is described further above in relation to FIG. 3 and in particularin relation to similarity module 141.

FIG. 6D illustrates a flowchart of an example process 470 fordetermining whether a first service delivery project is similar to asecond service delivery project, according to an embodiment of thepresent invention. In process block 471, generate a first sequence oftotal costs values representing a succinct approximate representation ofa first sequence of cost values over time for a first service deliveryproject. In process block 472, generate a second sequence of total costsvalues representing a succinct approximate representation of a secondsequence of cost values over time for a second service delivery project.In process block 473, determine a corresponding length for each sequenceof total cost values. In process block 474, determine a correlationcoefficient between the first sequence of total cost values and thesecond sequence of total cost values. In process block 475, determinewhether the first service delivery project is similar to the secondservice delivery project based on the lengths determined and thecorrelation coefficient determined. An embodiment of the functionsperformed by process blocks 471, 472, 473, 474 and 475 is describedfurther above in relation to FIG. 3 and in particular in relation tosimilarity module 141.

FIG. 7A illustrates generating an example typical model 250 based on aset 40 of projects 41, according to an embodiment of the presentinvention. A typical model 250 is a segmented model 200 representing anaggregate of multiple segmented models 200.

The construction module 135 is configured to generate (i.e., construct)a typical model 250 based on a set 40 of projects 41. Each project 41comprises a sequence of data values (e.g., costs). For example, theconstruction module 135 may be used to construct a typical model of workpatterns based on a set 40 of service delivery projects 41 obtained fromthe ledger storage unit 110 or the cost cases storage unit 120. Theconstruction module 135 is also configured to construct a typical model250 based on a set 40 of parts of projects 41.

Table 2 below provides example pseudo code for constructing a typicalmodel 250 based on segmented models 200 for a set 40 of projects 41.

TABLE 2 //Compute average cost and average length for each segment oftypical model, wherein y //represents number of segments that typicalmodel will have; TotalCost₁, TotalCost₂, . . ., //TotalCost_(z)represent total costs for a first segmented model, a second segmentedmodel, . . ., //and a final segmented model for the set of projects;length₁, length₂, . . ., length_(z) represent //lengths for a firstsegmented model, a second segmented model, . . ., and a final segmented//model for the set of projects for (s = 1; s <= y; s++) {    average_cost[s] = computeAverage(TotalCost₁[s], TotalCost₂[s], . .., TotalCost_(z)[s]);     average_length[s] = computeAverage(length₁[s],length₂[s], . . ., length_(z)[s]);     average_length[s] =roundToNearestInteger(average_length[s]); } //Set index s to 1 s = 1;while (1) {     //Compute slope and end value of each segment of typicalmodel     slope[s] = average_cost[s]/average_length[s];     end_value[s]= end_value[s−1] + (slope[s]*average_length[s]);     if(badSegment([s])) {       //If current segment is bad, adjust length ofprior and current segment       //based on constraints      adjustLength(s−1,s);     }     if (badSegment([s])) {       //Ifcurrent segment is still bad, output s − 1 segments       output s−1segments;       break;     }     else {       //Increment index s      s = s+1;     } }

As shown in Table 2, in one embodiment, for each project 41 of the set40, the construction module 135 utilizes the segmentation module 133 toconvert the sequence of data values of the project 41 into a segmentedmodel 200 comprising a sequence of segments of alternating character.For each segment of the typical model 250, the construction unit 135computes an average total cost and an average length (i.e., duration oftime) for the segment based on a corresponding segment of all segmentedmodels 200 for the set 40. Each segment of the typical model 250 has acorresponding slope, wherein the corresponding slope is equal to anaverage total cost computed for the segment divided by a length based onthe average length computed for the segment.

With the possible exception of a last segment, each segment of thetypical model 250 ends in a data value that is equal to a sum of a priorend value for a prior segment and a product of the slope and a lengthbased on the average length. If a segment is a bad segment because itviolates prespecified constraints based on ratios between the segmentsof the segmented model 200, the length of a prior segment and the lengthof the bad segment are adjusted to maintain the pre-specifiedconstraints.

In one embodiment, a segment may be a bad segment if the segmentincludes non-positive data values. A segment may also be a bad segmentif a ratio of peak to trough for the segment and a preceding/priorsegment exceeds a maximum corresponding peak to trough ratio for allsegmented models 200 for the set 40.

FIG. 7B illustrates a flowchart of an example process 480 for generatinga typical model, according to an embodiment of the present invention. Inprocess block 481, receive multiple sequences of data values over time.In process block 482, generate a corresponding sequence of segments thatrise and fall alternatively for each sequence of data values. In processblock 483, generate a typical model based on the sequences of segments,wherein the typical model represents an aggregate of the sequences ofsegments. An embodiment of the function performed by process block 483is described further above in relation to FIG. 7A and in particular inrelation to typical model construction module 135.

FIG. 7C illustrates a flowchart of an example process 490 forconstructing a typical model for one or more work patterns of a set ofservice delivery projects, according to an embodiment of the presentinvention. In process block 491, for each service delivery project,converting a corresponding sequence of cost values over time into acorresponding segmented model, wherein each segmented model comprises asequence of segments that rise and fall alternately, and wherein eachsegment of each sequence of segments corresponds to an index segmentindicating a position of the segment in the sequence of segments. Inprocess block 492, for each index segment, determine a correspondingaverage length by averaging lengths of corresponding segments. Theaverage length determined is rounded to the nearest integer. In processblock 493, for each index segment, determine a corresponding averagetotal cost value by averaging total cost values of correspondingsegments. In process block 494, assemble a typical model based on theaverage lengths and the average total cost values determined, whereinthe typical model comprises an aggregated sequence of segments. Inprocess block 495, maintain one or more constraints by adjusting alength of one or more segments of the typical model. An embodiment ofthe functions performed by process blocks 491, 492, 493, 494 and 495 isdescribed further above in relation to FIG. 7A and in particular inrelation to typical model construction module 135.

FIG. 8A illustrates an example typical model 250, according to anembodiment of the present invention. As stated above, a typical model250 is a segmented model 200 representing an aggregate of multiplesegmented models 200.

FIG. 8B illustrates an example input time series 50 missing one or morepast data values, according to an embodiment of the present invention.The number of missing past data values (i.e., elements) may be n,wherein n is a positive integer. A missing past data value may representmissing past cost data. For example, as shown in FIG. 8B, the input timeseries 50 has about n missing past data values.

The extrapolation module 136 is configured to extrapolate the missingpast data values of the time series 50 based on a typical model 250. Inone embodiment, the extrapolation module 136 utilizes the constructionmodule 135 to generate a typical model 250, such as the typical model250 shown in FIG. 8A. Upon receiving the input time series 50, theextrapolation module 136 utilizes the segmentation module 133 togenerate a segmented model 200 for the input time series 50. Theextrapolation module 136 is then configured to fit the typical model 250to the segmented model 200. Specifically, the extrapolation module 136aligns a peak or trough of the segmented model 200 with a firstcorresponding peak or trough of the typical model 250, wherein the pointof alignment is after the number of missing past data values. Theextrapolation module 136 then extends the input time series 50 into thepast by concatenating at least a portion of a scaled version of thetypical model 250 with at least a portion of the segmented model 200 toextrapolate the missing past data values.

In one embodiment, the typical model 250 is scaled based on a scalingfactor equal to a ratio between a data value of the input time series 50and a data value of the aligned typical model 250 at the point ofalignment.

In one embodiment, models must satisfy a constraint requiring the firstsegment of each model to be a rising segment. The constraint requiringthe first segment of each model to be a rising segment facilitatesaligning of models, but results in hidden troughs. In thisspecification, a hidden trough of a model denotes a trough that occursbefore a first peak data value of the model but is not designated as atrough to satisfy the constraint requiring the first segment of eachmodel to be a rising segment. If models must satisfy a constraintrequiring the first segment of each model to be a rising segment, theextrapolation module 136 aligns a peak or a hidden trough of thesegmented model 200 with a first corresponding peak or trough of thetypical model 250, wherein the point of alignment is after the number ofmissing past data values.

Table 3 below provides example pseudo code for determining whether asegmented model x has a hidden trough. If a pre-determined length is notspecified, it is assumed that two neighboring elements immediatelypreceding an element of an input time series 50 and two neighboringelements immediately following the element are required to determinewhether the element is a provisional peak or a provisional trough.

TABLE 3 if (isPeak(x[0])) {     //If first element of segmented model xis a peak, there     is no hidden trough     output “no hidden trough”;} else {     //Determine maximum h of segmented model x, extend x to    left by two copies     //of h+1, and perform segmentation ofextended segmented     model x     h = max(x);     extend x to left bytwo copies of h+1;     segment(x);     if (isPeak(x[0])) {       //Iffirst element of extended segmented model x is a peak,       index ofhidden       //trough is equal to index of first trough − 2       outputindex of first trough − 2;     }     else {       //There is no hiddentrough       Output “no hidden trough”;     } }

FIG. 9 illustrates the example input time series 50 in FIG. 8Bconcatenated with a scaled typical model 250 to extrapolate missing pastdata values, according to an embodiment of the present invention. Toextrapolate the missing past data values, the extrapolation module 136extends the input time series 50 into the past by concatenating at leasta portion of a scaled version of the typical model 250 with at least aportion of the input time series 50 to extrapolate the missing past datavalues. The point of alignment between the typical model 250 and theinput time series 50 is after at least the number of missing past datavalues.

FIG. 10 illustrates a flowchart of an example process 350 forextrapolating missing past data values for an input series, according toan embodiment of the present invention. In process block 351, generate atypical model. In process block 352, receive an input series comprisinga sequence of data values over time, and a number of past data values toextrapolate. In process block 353, construct a sequence of segments thatrise and fall alternatively for the input series. In process block 354,fit the typical model to the sequence of segments. For example, thetypical model is fitted to the sequence of segments by aligning a peakof the typical model to a peak of the sequence of segments (the point ofalignment). As another example, the typical model is fitted to thesequence of segments by aligning a trough of the typical model to ahidden trough of the sequence of segments (the point of alignment). Inprocess block 355, extend the input series by concatenating at least aportion of a scaled version of the typical model with the input seriesto extrapolate the past data values. An embodiment of the functionsperformed by process blocks 354 and 355 are described further above inrelation to FIGS. 8-9 and in particular in relation to extrapolationmodule 136.

FIG. 11 illustrates an example input time series 50 concatenated with atleast a portion of a scaled typical model 250 to forecast future datavalues, according to an embodiment of the present invention. A futuredata value may represent future cost data. The extrapolation module 136is configured to forecast future data values based on a typical model250.

In one embodiment, the extrapolation module 136 utilizes theconstruction module 135 to generate a typical model 250, such as thetypical model 250 shown in FIG. 11. Upon receiving an input time series50 and a number of future data values to forecast for the input timeseries 50, the extrapolation module 136 utilizes the segmentation module133 to generate a segmented model 200 for the input time series 50. Theextrapolation module 136 completes a last segment of the segmented model200 such that the last segment ends in either a peak or a trough. Theextrapolation module 136 then fits the typical model 250 to thesegmented model 200. Specifically, the extrapolation module 136 alignsthe last segment of the segmented model 200 with a peak or hidden troughof the typical model 250, wherein the point of alignment is after thenumber of segments of the segmented model 200. The extrapolation module136 then extends the input time series 50 into the future byconcatenating at least a portion of a scaled version of the typicalmodel 250 with the input time series 50 to forecast the future datavalues. For example, as shown in FIG. 11, the scaled version of thetypical model 250 is concatenated with the input time series 50 afterthe last segment of the segmented model 200.

Table 4 below provides example pseudo code for completing a last segmentof a segmented model y.

TABLE 4 //Index last references last element of segmented model y last =length of y − 1; if (isPeak(y[last]) or isTrough(y[last])) {     //Ifelement y[last] is a peak or a trough, output segmented model y    output y; } else if ((y[0] == 0) and (y[1] == 0) and ... (y[last] ==0)) {     //If all values of segmented model y are equal to zero, sety[last] to 0.01 and     //output segmented model y     y[last] = 0.01;    output y; } else if (last == 0) {     //If index last equals zero,output x[0], 0, −x[0]     output x[0], 0, −x[0]; } else {     //Set z tolength of maximum final subsequence without peaks or troughs     z =length of y[last]     if (y[last−z] ==NULL) {       //If segmenty[last−z] does not exist, assume y[last−z] is equal to zero      y[last−z] = 0;     }     //Set wa to exponentially weightedaverage of final z differences (i.e., y[last]−y[last−1],    //y[last−1]−y[last−2], . . . , y[last−z−1]−y[last−z]     wa =exponentially weighted average of final z differences;     if (wa == 0){       //If wa is equal to zero, set wa to last difference (i.e.,y[last]−y[last−1])       wa = last difference;     }     if (wa == 0) {      //If wa is equal to zero, set wa to 0.1 and extend y byy[last]+wa, y[last]+2wa       wa = 0.1;       extend y by y[last]+wa,y[last]+2wa;     //Modify y until y[last+2] > 0.0     while (y[last+2]<= 0) {       if ((y[last] <=0 ) and (wa < 0)) {          //If y[last]is less than or equal to zero and wa is less than zero,          //setwa to −wa          wa = −wa;       }       if ((y[last]+wa) < 0) {         //If y[last]+wa is less than zero, extend y by 0 and−y[last]−wa          extend y by 0 and −y[last]−wa;       }       elseif ((y[last]+2wa) < 0) {          //If y[last]+2wa is less than zero,extend y by y[last]+wa, (y[last]+wa)/2          extend y by y[last]+wa,(y[last]+wa)/2;       }       else if ((y[last]+2wa) == 0) {         //If y[last]+2wa equals to zero, extend y by y[last]+wa,abs(y[last])          extend y by y[last]+wa, abs(y[last]);       }    }     output y; }

If a project is scheduled to run longer than the resulting concatenatedmodel, the extrapolation module 136 extends the concatenated model to ascheduled end date for the project based on a final segment of theconcatenated model. In one embodiment, the extrapolation module 136builds a ramp 80 from a scaled last data value of the typical model 250,wherein the ramp 80 accounts for a total obtained by multiplying thescaled last data value by the number of elements to forecast. Forexample, as shown in FIG. 11, an example ramp 80 extends to the right ofthe typical model 250.

Table 5 below provides example pseudo code for building a ramp for asegmented model y, wherein the segmented model y is concatenated with aversion of typical model j that is scaled by a scaling factor r toaccount for n future elements.

TABLE 5 //Index last references last element of typical model j last =length(j) − 1; if (length(j) > length (y)) {     //If typical model jhas more elements than segmented     model y, extend     //segmentedmodel y to right by n copies of j[last] scaled     by scaling factor r    m = j[last] * r;     extend y to right by n copies of m; } else {    //If typical model j has less than or the same number of    elements as time     //segmented model y, extend segmented model yto     right by n elements     total = n*j[last]*r;     slope = 2*(total− (n*x[last]))/(n*(n+1));     for (i =1; i <=n; i++) {       extend y toright by y[last]+(i*slope);     } } output extended y;

FIG. 12 illustrates a flowchart of an example process 360 forforecasting future data value for an input series, according to anembodiment of the present invention. In process block 361, generate atypical model. In process block 362, receive an input series comprisinga sequence of data values over time, and a number of future data valuesto forecast. In process block 363, construct a sequence of segments thatrise and fall alternatively for the input series. In process block 364A,determine if a last segment of the sequence of segments is incomplete.If the last segment is incomplete, proceed to process block 364B. If thelast segment is complete, proceed to process block 365.

In process block 364B, complete the last segment such that the lastsegment ends in either a peak data value or a trough data value, andproceed to process block 365. In process block 365, fit the typicalmodel to the sequence of segments. In process block 366, extend theinput series by concatenating at least a portion of a scaled version ofthe typical model with the input series to forecast the future datavalues. An embodiment of the functions performed by process blocks 364A,364B, 365 and 366 are described further above in relation to FIG. 11 andin particular in relation to extrapolation module 136.

In another embodiment, a typical model 250 may be used as a source forregression forecasting of an input time series 50. For example, thetypical model 250 and the input time series 50 may be aligned for one ormore missing data elements. A model such as a best fit linear modelbetween the typical model 250 and the input time series 50 may beapplied to the typical model 250 to provide estimates for missing pastor future data elements.

FIG. 13 illustrates an example generic model 260, according to anembodiment of the present invention. When a cost case for a project ismissing or fails to match corresponding ledger data for the project(i.e., an unusable cost case), a generic model 260 is constructed basedon ledger data for the project and ledger data for similar projects.

Specifically, the system 100 utilizes the construction module 135 toconstruct a typical model 250 based on ledger data for similar projects.The system 100 then utilizes the extrapolation module 136 to extendavailable ledger data for the project using the typical model 250.

For example, as shown in FIG. 13, a generic model 260 comprises a firstsequence of data values representing actual data values (e.g., actualcosts recorded in ledger data), a second sequence of data values thatwere extrapolated using a typical model 250, and a third sequence ofdata values that were linearly extrapolated (e.g., by building a rampfrom a scaled last data value of the typical model 250).

FIG. 14 illustrates multiple example time series 50 including are-shaped time series 53, according to an embodiment of the presentinvention. Specifically, FIG. 14 illustrates a first time series 51representing a sequence of actual data values (e.g., actual costsincurred by an ongoing service delivery project over time), a secondtime series 52 representing a sequence of estimated data values (e.g.,cost estimations for a planned service delivery project over time), andthird time series 53 representing a sequence of re-shaped estimated datavalues (e.g., re-shaped cost estimations for a planned service deliveryproject over time).

In one embodiment, the re-shaping module 138 is configured to align andre-shape a sequence of estimated data values for a project based onactual data for the project and/or actual data for similar projects. Forexample, the re-shaping module 138 may be used to align a cost case (orcorresponding generic model) to historical ledger data, and re-shapecost estimations for the cost case based on actual costs reflected inledger data.

In this specification, let A denote an input time series 50 representinga sequence of actual data values for a project, and let P denote aninput time series 50 representing a sequence of estimated data valuesfor a plan for the same project. To align and re-shape the input timeseries P, the re-shaping module 138 utilizes the segmentation module 133to generate a segmented model 200 for the input time series A and asegmented model 200 for the input time series P.

The re-shaping module 138 also utilizes the construction module 135 togenerate a typical model 250 based on actual data for similar projects.If the input time series A has missing past data values, the re-shapingmodule 138 utilizes the extrapolation module 136 to extrapolate themissing past data values. Specifically, a scaled version of at least aportion of the typical model 250 is concatenated to the input timeseries A to extrapolate the missing past data values.

The re-shaping module 138 aligns at least one segment of the segmentedmodel 200 for the input time series A with a corresponding segment ofthe segmented model 200 for the input time series P. The input timeseries P is then re-shaped to fit the aligned segments of the segmentedmodel 200 for the input time series A. In one embodiment, the alignedsegments of the segmented model 200 for the input time series A arescaled to preserve total estimated data values. For example, the alignedsegments of the segmented model 200 for the input time series A arescaled based on a ratio between total estimated data values and totalactual data values. In one embodiment, the re-shaped time series may beextended to correspond to an end date for the project.

For example, when all historical ledger data are available for aproject, the re-shaping module 138 may be used to align a cost case forthe project to earliest actual costs. The aligned cost case is thenre-shaped to fit the shape of the ledger data, while preserving totalplanned costs instead of total ledger costs.

Table 6 below provides example pseudo code for aligning and re-shaping asegmented model for an input time series P using a segmented model foran input time series A.

TABLE 6 //Initialize start segment index for segmented model for a planP aP =0; //Initialize start segment index for segmented model foractuals A aA = 0; //Initialize end segment index for segmented model forP sP = aP+1; //Initialize end segment index for segmented model for A sA= aA + 1; while (1) {     //Determine if feasible to replace segments aPthrough sP with scaled segments aA     //through sA     if(feasible(aA,sP,aA,sA)) {       //If feasible...       replace segmentsfrom aP, . . ., sP with scaled segments aA, . . ., sA and maintain      timing data (i.e., dates) for A;       aP = sP;       aA = sA;      sP = aP+1;       sA = aA + 1;     }     else {       //If notfeasible...       //lastA references last segment of segmented model forA       lastA = segment index of A[length(A) − 1];       //lastPreferences last segment of segmented model for P       lastP = segmentindex of P[length(P) − 1];       if (sA < lastA) {           sA = sA +1;       }       else if (sP < lastP) {           sP = sP + 1;          sA = sA + 1;       }       else {           output revised Pwith adjusted dates;           break;       }     } }

In one embodiment, it is feasible to replace one or more segments forthe input time series P with one or more corresponding segments for theinput time series A if replacing the segments preserves the alternatingcharacter of the segments. In another embodiment, it may also befeasible to replace one or more segments for the input time series Pwith one or more corresponding segments for the input time series A ifreplacing the segments maintains pre-specified constraints/requirements.

The extrapolation module 136 may utilize the re-shaping module 138 andthe extrapolation module 136 to forecast future data values based onactual data values and estimated data values.

FIG. 15A illustrates a flowchart of an example process 380 forgenerating revised estimated data values, according to an embodiment ofthe present invention. In process block 381, receive a first seriescomprising a sequence of actual data values over time, and a secondseries comprising a sequence of estimated data values over time. Inprocess block 382, generate a first sequence of segments and a secondsequence of segments for the first series and the second series,respectively, wherein each sequence of segments rises and fallsalternatively. In process block 383, align at least one segment of thesecond sequence of segments with at least one corresponding segment ofthe first sequence of segments. In process block 384, adjust the secondseries based on the aligned segments, wherein the adjusted second seriescomprises revised estimated data values. An embodiment of the functionsperformed by process blocks 383 and 384 are described further above inrelation to FIG. 14 and in particular in relation to re-shaping module138.

FIG. 15B illustrates a flowchart of an example process 499 for aligningand re-shaping, according to an embodiment of the present invention. Inprocess block 496, scale at least one segment of a first sequence ofsegments. In process block 497, align at least one segment of a secondsequence of segments with at least one corresponding scaled segment ofthe first sequence of segments. In process block 498, replace thealigned segments of the second sequence of segments with correspondingscaled segments of the first sequence of segments. An embodiment of thefunctions performed by process blocks 496, 497 and 498 is describedfurther above in relation to FIG. 14 and in particular in relation tore-shaping module 138.

FIG. 16 is a high level block diagram showing an information processingsystem 300 useful for implementing one embodiment of the invention. Thecomputer system includes one or more processors, such as processor 302.The processor 302 is connected to a communication infrastructure 304(e.g., a communications bus, cross-over bar, or network).

The computer system can include a display interface 306 that forwardsgraphics, text, and other data from the communication infrastructure 304(or from a frame buffer not shown) for display on a display unit 308.The computer system also includes a main memory 310, preferably randomaccess memory (RAM), and may also include a secondary memory 312. Thesecondary memory 312 may include, for example, a hard disk drive 314and/or a removable storage drive 316, representing, for example, afloppy disk drive, a magnetic tape drive, or an optical disk drive. Theremovable storage drive 316 reads from and/or writes to a removablestorage unit 318 in a manner well known to those having ordinary skillin the art. Removable storage unit 318 represents, for example, a floppydisk, a compact disc, a magnetic tape, or an optical disk, etc. which isread by and written to by removable storage drive 316. As will beappreciated, the removable storage unit 318 includes a computer readablemedium having stored therein computer software and/or data.

In alternative embodiments, the secondary memory 312 may include othersimilar means for allowing computer programs or other instructions to beloaded into the computer system. Such means may include, for example, aremovable storage unit 320 and an interface 322. Examples of such meansmay include a program package and package interface (such as that foundin video game devices), a removable memory chip (such as an EPROM, orPROM) and associated socket, and other removable storage units 320 andinterfaces 322, which allows software and data to be transferred fromthe removable storage unit 320 to the computer system.

The computer system may also include a communication interface 324.Communication interface 324 allows software and data to be transferredbetween the computer system and external devices. Examples ofcommunication interface 324 may include a modem, a network interface(such as an Ethernet card), a communication port, or a PCMCIA slot andcard, etc. Software and data transferred via communication interface 324are in the form of signals which may be, for example, electronic,electromagnetic, optical, or other signals capable of being received bycommunication interface 324. These signals are provided to communicationinterface 324 via a communication path (i.e., channel) 326. Thiscommunication path 326 carries signals and may be implemented using wireor cable, fiber optics, a phone line, a cellular phone link, an RF link,and/or other communication channels.

In this document, the terms “computer program medium,” “computer usablemedium,” and “computer readable medium” are used to generally refer tomedia such as main memory 310 and secondary memory 312, removablestorage drive 316, and a hard disk installed in hard disk drive 314.

Computer programs (also called computer control logic) are stored inmain memory 310 and/or secondary memory 312. Computer programs may alsobe received via communication interface 324. Such computer programs,when run, enable the computer system to perform the features of thepresent invention as discussed herein. In particular, the computerprograms, when run, enable the processor 302 to perform the features ofthe computer system. Accordingly, such computer programs representcontrollers of the computer system.

From the above description, it can be seen that the present inventionprovides a system, computer program product, and method for implementingthe embodiments of the invention. The present invention further providesa non-transitory computer-useable storage medium. The non-transitorycomputer-useable storage medium has a computer-readable program, whereinthe program upon being processed on a computer causes the computer toimplement the steps of the present invention according to theembodiments described herein. References in the claims to an element inthe singular is not intended to mean “one and only” unless explicitly sostated, but rather “one or more.” All structural and functionalequivalents to the elements of the above-described exemplary embodimentthat are currently known or later come to be known to those of ordinaryskill in the art are intended to be encompassed by the present claims.No claim element herein is to be construed under the provisions of 35U.S.C. section 112, sixth paragraph, unless the element is expresslyrecited using the phrase “means for” or “step for.”

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

What is claimed is:
 1. A method, comprising: retrieving historicalledger data comprising a first sequence of actual costs incurred by anongoing service delivery project over time; extrapolating the firstsequence of actual costs into the future based on the historical ledgerdata; retrieving one or more cost cases comprising a second sequence ofcost estimations for a planned service delivery project over time;generating an estimate model for the planned service delivery projectbased on the second sequence of cost estimations and actual costsincluded in the historical ledger data; and forecasting long-range costestimations for the planned service delivery project based on theestimate model and the extrapolated first sequence of actual costs,wherein the long-range cost estimations represent cost estimations forthe planned service delivery project up to an end date scheduled in thefuture.
 2. The method of claim 1, wherein the extrapolating comprises:constructing a typical model based on the historical ledger data; andadding a scaled version of the typical model generated to an end of thefirst sequence of actual costs.
 3. The method of claim 1, furthercomprising: generating a report based on the long-range costestimations.
 4. The method of claim 1, further comprising: aligning andre-shaping the estimate model based on actual costs included in thehistorical ledger data.
 5. A system comprising a computer processor, acomputer-readable hardware storage medium, and program code embodiedwith the computer-readable hardware storage device for execution by thecomputer processor to implement a system comprising: retrievinghistorical ledger data comprising a first sequence of actual costsincurred by an ongoing service delivery project over time; extrapolatingthe first sequence of actual costs into the future based on thehistorical ledger data; retrieving one or more cost cases comprising asecond sequence of cost estimations for a planned service deliveryproject over time; generating an estimate model for the planned servicedelivery project based on the second sequence of cost estimations andactual costs included in the historical ledger data; and forecastinglong-range cost estimations for the planned service delivery projectbased on the estimate model and the extrapolated first sequence ofactual costs, wherein the long-range cost estimations represent costestimations for the planned service delivery project up to an end datescheduled in the future.
 6. The system of claim 5, wherein theextrapolating comprises: constructing a typical model based on thehistorical ledger data; and adding a scaled version of the typical modelgenerated to an end of the first sequence of actual costs.
 7. The systemof claim 5, wherein the method further comprises: generating a reportbased on the long-range cost estimations.
 8. The system of claim 5,wherein the method further comprises: aligning and re-shaping theestimate model based on actual costs included in the historical ledgerdata.
 9. A computer program product for revising planned costs for aplanned service delivery project based on actual costs incurred by anongoing service delivery project, the computer program productcomprising a tangible storage medium readable by a computer system andstoring instructions for execution by the computer system for performinga method comprising: retrieving historical ledger data comprising afirst sequence of actual costs incurred by an ongoing service deliveryproject over time; extrapolating the first sequence of actual costs intothe future based on the historical ledger data; retrieving one or morecost cases comprising a second sequence of cost estimations for aplanned service delivery project over time; generating an estimate modelfor the planned service delivery project based on the second sequence ofcost estimations and actual costs included in the historical ledgerdata; and forecasting long-range cost estimations for the plannedservice delivery project based on the estimate model and theextrapolated first sequence of actual costs, wherein the long-range costestimations represent cost estimations for the planned service deliveryproject up to an end date scheduled in the future.
 10. The computerprogram product of claim 9, wherein the extrapolating comprises:constructing a typical model based on the historical ledger data; andadding a scaled version of the typical model generated to an end of thefirst sequence of actual costs.
 11. The computer program product ofclaim 9, wherein the method further comprises: generating a report basedon the long-range cost estimations.
 12. The computer program product ofclaim 9, wherein the method further comprises: aligning and re-shapingthe estimate model based on actual costs included in the historicalledger data.